<?php

/**
 * 邮件发送
 * @param  string $to      收件方
 * @param  string $title   标题
 * @param  string $content 内容
 * @return string          发送状态
 */
function sendMail($to, $title, $content) {
	//步骤
	//1复制文件到当前项目下的Thinkphp/libary/Org/Util (class.pop3.php class.smtp.php class.phpmailer.php)
	//2.修改类文件的名称
	//3.修改命名空间
	//4.注意在PHPMailer中最后一个继承
	$mail          = new \Org\Util\PHPMailer();
	$mail->CharSet = "utf-8"; //设置采用utf8中文编码
	$mail->IsSMTP(); //设置采用SMTP方式发送邮件
	$mail->Host     = "smtp.163.com"; //设置邮件服务器的地址
	$mail->Port     = 25; //设置邮件服务器的端口，默认为25
	$mail->From     = C('EmailUsername'); //设置发件人的邮箱地址
	$mail->FromName = "众众网"; //设置发件人的姓名
	$mail->SMTPAuth = true; //设置SMTP是否需要密码验证，true表示需要
	$mail->Username = C('EmailUsername');
	$mail->Password = C('EmailPassword');
	$mail->Subject  = $title; //设置邮件的标题

	$mail->AltBody = "text/html"; // optional, comment out and test

	$mail->Body = $content;

	$mail->IsHTML(true); //设置内容是否为html类型

	$mail->AddAddress(trim($to), $name); //设置收件的地址
	if (!$mail->Send()) {
		//发送邮件
		// echo '发送失败:' . $mail->ErrorInfo;
		return false;
	} else {
		// echo "发送成功";
		return true;
	}
}

/**
 * [Jy 用于实例化极验验证类]
 * @param [type] $id  [极验验证所需id]
 * @param [type] $key [极验验证所需key]
 */
function Jy($id, $key) {
	return new GeetestLib($id, $key);
}

/**
 * [mkDirs 递归创建目录]
 * @param  [type] $dir [传入需要创建的目录层级]
 * @return [type]      [成功返回true / 失败返回false]
 */
function mkDirs($dir) {
	if (!is_dir($dir)) {
		if (!mkDirs(dirname($dir))) {
			return false;
		}
		if (!mkdir($dir, 0777)) {
			return false;
		}
	}
	return true;
}

//当版本低于5.5时~
if (!function_exists('array_column')) {
	function array_column($input, $columnKey, $indexKey = NULL) {
		$columnKeyIsNumber = (is_numeric($columnKey)) ? TRUE : FALSE;
		$indexKeyIsNull    = (is_null($indexKey)) ? TRUE : FALSE;
		$indexKeyIsNumber  = (is_numeric($indexKey)) ? TRUE : FALSE;
		$result            = array();

		foreach ((array) $input AS $key => $row) {
			if ($columnKeyIsNumber) {
				$tmp = array_slice($row, $columnKey, 1);
				$tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : NULL;
			} else {
				$tmp = isset($row[$columnKey]) ? $row[$columnKey] : NULL;
			}
			if (!$indexKeyIsNull) {
				if ($indexKeyIsNumber) {
					$key = array_slice($row, $indexKey, 1);
					$key = (is_array($key) && !empty($key)) ? current($key) : NULL;
					$key = is_null($key) ? 0 : $key;
				} else {
					$key = isset($row[$indexKey]) ? $row[$indexKey] : 0;
				}
			}

			$result[$key] = $tmp;
		}

		return $result;
	}
}


  /**
   * [Uploads 图片上传处理函数]
   * @param [string] $filename [上传表单的上传域的name值]
   * @param [string] $path [保存至Public/Uploads/的文件夹]
   * @return  mixed [成功, 返回上传文件路径(都是存在Public目录下, 返回的路径不含Public这层目录) | 失败, 返回false]
   */
function Uploads($filename, $path='photo'){

	//处理图片
	if ($_FILES[$filename]['error'] == 0) {
		$upload           = new \Think\Upload(); // 实例化上传类
		$upload->maxSize  = 3145728; // 设置附件上传大小
		$upload->exts     = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
		$upload->rootPath = './Public';
		$upload->savePath = '/Uploads/' . $path . '/'; // 设置附件上传目录
		// 上传文件
		$info = $upload->upload();
		if (!$info) {
			// 上传错误提示错误信息
			return false;
		} else {
			// 上传成功
			// $this->success('上传成功！');
			$str =  $info[$filename]['savepath'].$info[$filename]['savename'];

			return $str;
		}
	}

}

/**
 * [transfBirth   m-d-y格式的时间字符串<=>时间戳]
 * @param  [mixed]  $arg  [字符串或时间戳]
 * @param  boolean $type [true是m-d-y=>时间戳, false为时间戳=>m-d-y]
 * @return [mixed]        [返回时间戳或m-d-y的时间字符串]
 */
function transfBirth($arg, $type = true) {
	if ($type) {
		$arr = explode('-', $arg);
		$ymd = $arr[2] . '-' . $arr[0] . '-' . $arr[1];
		return strtotime($ymd);
	} else {
		return date('m-d-Y', $arg);
	}
}

//遍历文件夹
function listDir($dir) {
	$dir .= substr($dir, -1) == '/' ? '' : '/';
	$dirInfo = array();
	foreach (glob($dir . '*') as $v) {
		$dirInfo[] = $v;
		if (is_dir($v)) {
			$dirInfo = array_merge($dirInfo, listDir($v));
		}
	}
	return $dirInfo;
}

//递归和谐分享内容
function hexie($arr){

    foreach ($arr as $key => $val) {
        //删除news_id为val的动态
       $news = M('news');
        $news ->where("news_id =".$val) -> delete();
        //删除news_id为val的回复
       $news_bb = M('news_bb');
        $news_bb ->where("news_id =".$val) -> delete();
        //得到isturn为val的动态
        $res = $news -> field('news_id') -> where('isturn='.$val) ->select();
        $res = array_column($res, 'news_id');
        hexie($res);
    }

}

/**
* 根据数组中的某个键值大小进行排序，仅支持二维数组
*
* @param array $array 排序数组
* @param string $key 键值
* @param bool $asc 默认正序
* @return array 排序后数组
*/
function arraySortByKey(array $array, $key, $asc = true)
{
	$result = array();
	// 整理出准备排序的数组
	foreach ( $array as $k => &$v ) {
		$values[] = isset($v[$key]) ? $v[$key] : '';
	}
	unset($v);
	// 对需要排序键值进行排序
	$asc ? asort($values) : arsort($values);
	// 重新排列原有数组
	foreach ( $values as $k => $v ) {
		$result[] = $array[$k];
	}
	return $result;
}
